<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<style>
#t1 { color: 008000 }
#t2 { background-color: 008000 }
#t3 { border-color: 008000  }
#t4 { border-bottom-color: 008000  }
#t5 { border-left-color: 008000  }
#t6 { border-right-color: 008000  }
#t7 { border-top-color: 008000  }

#t8 { background: ff0000 }
#t9 { text-shadow: 1px 1px ff0000 }
#t10 { box-shadow: 1px 1px ff0000 }
#t11 { background-image: linear-gradient(ff0000, blue); }

#t12 { border-inline-start-color: ff0000 }
#t13 { border-inline-end-color: ff0000 }
#t14 { border-block-start-color: ff0000 }
#t15 { border-block-end-color: ff0000 }

#t16 { -webkit-column-rule-color: ff0000 }

#t17 { -webkit-text-emphasis-color: ff0000 }
#t18 { -webkit-text-fill-color: ff0000 }
#t19 { -webkit-text-stroke-color: ff0000 }

#t20 { fill: ff0000 }
#t21 { stroke: ff0000 }
#t22 { stop-color: ff0000 }
#t23 { flood-color: ff0000 }
#t24 { lighting-color: ff0000 }

#t25 { border-top: ff0000 }
#t26 { border-left: ff0000 }
#t27 { border-right: ff0000 }
#t28 { border-bottom: ff0000 }
#t29 { border: ff0000 }

#t30 { background-color: 1.1 }
#t31 { background-color: +1.1 }
#t32 { background-color: 1e1 }
#t33 { background-color: 1e+1 }
#t34 { background-color: 1e-1 }
#t35 { background-color: 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222f }

#t36 { border-color: 1010 }
#t37 { border-color: 00101010 }
#t38 { border-color: ff10 }
#t39 { border-color: ff101010 }
#t40 { background-color: 0.000ff }
#t41 { background-color: -0001ff }
#t42 { background-color: -0.000ff }
#t43 { background-color: -1.1 }
#t44 { background-color: -1 }
</style>
<div></div>
<script>
function testElementWithColorStyle(colorString) {
    var element = document.querySelector('div');
    element.style.color = null; /* Reset any existing color style first. */
    element.style.color = colorString;
    return element;
}

var sheet = document.styleSheets[0];

test(function(){ assert_true(!!sheet); }, "StyleSheet present");
test(function(){ assert_equals(sheet.cssRules.length, 44); }, "All rules parsed");

test(function(){
    assert_equals(sheet.cssRules[0].style.color, "rgb(0, 128, 0)");
}, "Hashless color quirk for color property");

test(function(){
    assert_equals(sheet.cssRules[1].style.backgroundColor, "rgb(0, 128, 0)");
}, "Hashless color quirk for background-color property");

test(function(){
    assert_equals(sheet.cssRules[2].style.borderColor, "rgb(0, 128, 0)");
}, "Hashless color quirk for border-color short-hand");

test(function(){
    assert_equals(sheet.cssRules[3].style.borderBottomColor, "rgb(0, 128, 0)");
}, "Hashless color quirk for border-bottom-color property");

test(function(){
    assert_equals(sheet.cssRules[4].style.borderLeftColor, "rgb(0, 128, 0)");
}, "Hashless color quirk for border-left-color property");

test(function(){
    assert_equals(sheet.cssRules[5].style.borderRightColor, "rgb(0, 128, 0)");
}, "Hashless color quirk for border-right-color property");

test(function(){
    assert_equals(sheet.cssRules[6].style.borderTopColor, "rgb(0, 128, 0)");
}, "Hashless color quirk for border-top-color property");

test(function(){
    assert_equals(sheet.cssRules[7].style.backgroundColor, "");
}, "No hashless color quirk for background short-hand");

test(function(){
    assert_equals(sheet.cssRules[8].style.textShadow, "");
}, "No hashless color quirk for text-shadow color");

test(function(){
    assert_equals(sheet.cssRules[9].style.boxShadow, "");
}, "No hashless color quirk for box-shadow color");

test(function(){
    assert_equals(sheet.cssRules[10].style.backgroundImage, "");
}, "No hashless color quirk for linear-gradient colors");

test(function(){
    assert_equals(sheet.cssRules[11].style.borderInlineStartColor, "");
}, "No hashless color quirk for border-inline-start-color property");

test(function(){
    assert_equals(sheet.cssRules[12].style.borderInlineEndColor, "");
}, "No hashless color quirk for border-inline-end-color property");

test(function(){
    assert_equals(sheet.cssRules[13].style.borderBlockStartColor, "");
}, "No hashless color quirk for border-block-start-property");

test(function(){
    assert_equals(sheet.cssRules[14].style.borderBlockEndColor, "");
}, "No hashless color quirk for border-block-end-color property");

test(function(){
    assert_equals(sheet.cssRules[15].style.WebkitColumnRuleColor, "");
}, "No hashless color quirk for -webkit-column-rule-color property");

test(function(){
    assert_equals(sheet.cssRules[16].style.WebkitTextEmphasisColor, "");
}, "No hashless color quirk for -webkit-text-emphasis-color property");

test(function(){
    assert_equals(sheet.cssRules[17].style.WebkitTextFillColor, "");
}, "No hashless color quirk for -webkit-text-fill-color property");

test(function(){
    assert_equals(sheet.cssRules[18].style.WebkitTextStrokeColor, "");
}, "No hashless color quirk for -webkit-text-stroke-color property");

test(function(){
    assert_equals(sheet.cssRules[19].style.fill, "");
}, "No hashless color quirk for fill property");

test(function(){
    assert_equals(sheet.cssRules[20].style.stroke, "");
}, "No hashless color quirk for stroke property");

test(function(){
    assert_equals(sheet.cssRules[21].style.stopColor, "");
}, "No hashless color quirk for stop-color property");

test(function(){
    assert_equals(sheet.cssRules[22].style.floodColor, "");
}, "No hashless color quirk for flood-color property");

test(function(){
    assert_equals(sheet.cssRules[23].style.lightingColor, "");
}, "No hashless color quirk for lighting-color property");

test(function(){
    assert_equals(sheet.cssRules[24].style.borderTopColor, "");
}, "No hashless color quirk for border-top shorthand");

test(function(){
    assert_equals(sheet.cssRules[25].style.borderLeftColor, "");
}, "No hashless color quirk for border-left shorthand");

test(function(){
    assert_equals(sheet.cssRules[26].style.borderRightColor, "");
}, "No hashless color quirk for border-right shorthand");

test(function(){
    assert_equals(sheet.cssRules[27].style.borderBottomColor, "");
}, "No hashless color quirk for border-bottom shorthand");

test(function(){
    assert_equals(sheet.cssRules[28].style.borderTopColor, "");
}, "No hashless color quirk for border shorthand");

test(function(){
    assert_equals(sheet.cssRules[29].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

test(function(){
    assert_equals(sheet.cssRules[30].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

test(function(){
    assert_equals(sheet.cssRules[31].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

test(function(){
    assert_equals(sheet.cssRules[32].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

test(function(){
    assert_equals(sheet.cssRules[33].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

test(function(){
    assert_equals(sheet.cssRules[34].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

test(function(){
    assert_equals(sheet.cssRules[35].style.borderColor, "rgb(0, 16, 16)");
}, "4 digits: 1010 is a valid <quirky-color>");

test(function(){
    assert_equals(sheet.cssRules[36].style.borderColor, "rgb(16, 16, 16)");
}, "8 digits: 00101010 is a valid <quirky-color>");

test(function(){
    assert_equals(sheet.cssRules[37].style.borderColor, "");
}, "No hashless color quirk for border-color property with 4 digit hex value");

test(function(){
    assert_equals(sheet.cssRules[38].style.borderColor, "");
}, "No hashless color quirk for border-color property with 8 digit hex value");

test(function(){
    var element = testElementWithColorStyle("f0f");
    assert_equals(element.style.color, "rgb(255, 0, 255)");
}, "3 digit hex: f0f should be accepted in quirks-mode");

test(function(){
    var element = testElementWithColorStyle("ff00ff");
    assert_equals(element.style.color, "rgb(255, 0, 255)");
}, "6 digit hex: ff00ff should be accepted in quirks-mode");

test(function(){
    var element = testElementWithColorStyle("F0F0");
    assert_equals(element.style.color, "");
}, "4 digit hex: F0F0 must be ignored in quirks-mode");

test(function(){
    var element = testElementWithColorStyle("FF00FF00");
    assert_equals(element.style.color, "");
}, "8 digit hex: FF00FF00 must be ignored in quirks-mode");

test(function(){
    assert_equals(sheet.cssRules[39].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

test(function(){
    assert_equals(sheet.cssRules[40].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

test(function(){
    assert_equals(sheet.cssRules[41].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

test(function(){
    assert_equals(sheet.cssRules[42].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

test(function(){
    assert_equals(sheet.cssRules[43].style.backgroundColor, "");
}, "No hashless color quirk for background-color property with invalid hashless value");

</script>
